/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package datos;

/**
 *
 * @author Brainor Alonso
 */
import dominio.Profesor;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.Date;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.table.DefaultTableModel;
public class ProfesorDatos {
    
    
    
    public void ingresarProfesor(Profesor profesor) throws SQLException {
        Connection con = BaseDeDatos.getConexion();
        CallableStatement cs = null;

        try {

            cs = con.prepareCall("{call sproc_insertar_profesor(?,?,?,?,?,?,?,?,?,?,?,?)}");
            cs.setInt(1, profesor.getIdentificacion());
            cs.setString(2, profesor.getPrimerNombre());
            cs.setString(3, profesor.getApellidos());
            cs.setString(4, profesor.getDireccion());
            cs.setString(5, profesor.getCiudad());
            cs.setInt(6, profesor.getNumeroCelular());
            cs.setInt(7, profesor.getNumeroCelular());
            cs.setString(8, profesor.getEmail());
            cs.setDate(9, new java.sql.Date(profesor.getFechaNacimiento().getTime()));
            cs.setInt(10, profesor.getCantidadLecciones());
            cs.setString(11, profesor.getCategoria());
            cs.setBoolean(12, profesor.getPropiedad());
            cs.execute();
        } catch (SQLException e) {
            throw e;
        } finally {
            if (cs != null) {
                try {
                    cs.close();
                } catch (SQLException e) {
                    System.err.println("SQLException: " + e.getMessage());
                }
            }
            if (con != null) {
                try {
                    con.close();
                } catch (SQLException e) {
                    System.err.println("SQLException: " + e.getMessage());
                }
            }
        }
    }//Fin

    public void actualizarProfesor(Profesor profesor) throws SQLException {
        Connection con = BaseDeDatos.getConexion();
        CallableStatement cs = null;
        try {
            cs = con.prepareCall("{call sproc_actualizar_profesor(?,?,?,?,?,?,?,?,?,?,?,?)}");
            cs.setInt(1, profesor.getIdentificacion());
            cs.setString(2, profesor.getPrimerNombre());
            cs.setString(3, profesor.getApellidos());
            cs.setString(4, profesor.getDireccion());
            cs.setString(5, profesor.getCiudad());
            cs.setInt(6, profesor.getNumeroCelular());
            cs.setInt(7, profesor.getTelefonoCasa());
            cs.setString(8, profesor.getEmail());
            cs.setDate(9, new java.sql.Date(profesor.getFechaNacimiento().getTime()));
            cs.setInt(10, profesor.getCantidadLecciones());
            cs.setString(11, profesor.getCategoria());
            cs.setBoolean(12, profesor.getPropiedad());
            cs.execute();
        } catch (SQLException e) {
            throw e;
        } finally {
            if (cs != null) {
                try {
                    cs.close();
                } catch (SQLException e) {
                    System.err.println("SQLException: " + e.getMessage());
                }
            }
            if (con != null) {
                try {
                    con.close();
                } catch (SQLException e) {
                    System.err.println("SQLException: " + e.getMessage());
                }
            }
        }
    }//Fin

    public void borrarProfesor(int identificacion) throws SQLException {
        Connection con = BaseDeDatos.getConexion();
        CallableStatement cs = null;
        try {
            cs = con.prepareCall("{call sproc_eliminar_profesor(?)}");
            cs.setInt(1, identificacion);
            cs.execute();
        } catch (SQLException e) {
            throw e;
        } finally {
            if (cs != null) {
                try {
                    cs.close();
                } catch (SQLException e) {
                    System.err.println("SQLException: " + e.getMessage());
                }
            }
            if (con != null) {
                try {
                    con.close();
                } catch (SQLException e) {
                    System.err.println("SQLException: " + e.getMessage());
                }
            }
        }
    }//Fin

    public DefaultTableModel getProfesor(String nombre) throws SQLException {
        DefaultTableModel dtmProfesores = new DefaultTableModel();
        Connection con = null;
        try {
            con = BaseDeDatos.getConexion();
            Statement stmt = con.createStatement();
            String slctProfesores = "SELECT identificacion, primer_nombre, apellidos, direccion, ciudad, numero_celular, telefono_casa, email, fecha_nacimiento, cantidad_lecciones, categoria, propiedad "
                    + "FROM profesor  WHERE primer_nombre like '%" + nombre + "%' ;";
            ResultSet rs = stmt.executeQuery(slctProfesores);
            dtmProfesores.addColumn("Cédula");
            dtmProfesores.addColumn("Nombre");
            dtmProfesores.addColumn("Apellidos");
            dtmProfesores.addColumn("Direccion");
            dtmProfesores.addColumn("Ciudad");
            dtmProfesores.addColumn("#Celular");
            dtmProfesores.addColumn("#Habitación");
            dtmProfesores.addColumn("Email");
            dtmProfesores.addColumn("Fecha");
            dtmProfesores.addColumn("#Lección");
            dtmProfesores.addColumn("Categoria");
            dtmProfesores.addColumn("Propiedad");

            while (rs.next() == true) {
                dtmProfesores.addRow(new Object[]{
                    rs.getInt(1),
                    rs.getString(2),
                    rs.getString(3),
                    rs.getString(4),
                    rs.getString(5),
                    rs.getInt(6),
                    rs.getInt(7),
                    rs.getString(8),
                    rs.getDate(9),
                    rs.getString(10),
                    rs.getString(11),
                    rs.getInt(12)});
            }
        } catch (SQLException e) {
            System.err.println("SQLException: " + e.getMessage());
        } finally {
            if (con != null) {
                try {
                    con.close();
                } catch (SQLException e) {
                    System.err.println("SQLException: " + e.getMessage());
                }
            }
        }
        return dtmProfesores;
    }
}
